import org.junit.jupiter.api.Test;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


/**
 * 先排序，然后先固定两个数，在剩下的里面找两个数的和等于相反数，去重
 */
public class a_mobie {


    @Test
    public  void  test(){
 //       String [] strs = {"eat", "tea", "tan", "ate", "nat", "bat"};
        String [] strs = {"ddddddddddg","dgggggggggg"};
        System.out.println(groupAnagrams(strs));
    }

    public List<List<String>> groupAnagrams(String[] strs) {

        List<String> list = new ArrayList<>(Arrays.asList(strs));
        List<List<String>> res=new ArrayList<>();
        if (strs==null){
            return res;
        }
        while (list.size()>0){
            //局部变量
            List<String > list1=new ArrayList();
            list1.add(list.get(0));
            List<String  > num=new ArrayList();
            num.add(list.get(0));
//            if (list.get(0)==""){
//                if (list.size()>1){
//                    for (int i = 1; i < list.size(); i++) {
//                        if (list.get(i).equals("")){
//                            list1.add(list.get(i));
//                            list.remove(i);
//                        }
//                    }
//                    res.add(list1);
//                }
//            }
            if (list.size()>1){
                for (int i = 1; i < list.size(); i++) {
                    if (list.get(0).equals("")&&list.get(i).equals("")){
                        list1.add(list.get(i));
                        num.add(list.get(i));
                        continue;
                    }
                    if (list.get(i).length()==list.get(0).length()){
                        String s = list.get(0);
                        char[] chars = s.toCharArray();
                        boolean flag=true;
                        for (int k = 0; k < chars.length; k++) {
                            if (list.get(i).contains(String.valueOf(chars[k]))){
                                continue;
                            }else {
                                flag=false;
                            }
                        }
                        if (flag){
                            list1.add(list.get(i));
                            num.add(list.get(i));
                        }
                    }

                }
            }
            res.add(list1);
            for (int i = 0; i < num.size(); i++) {
                list.remove(num.get(i));
            }

        }
        return res;
    }
}
